/**
 * <pre>
 * Copyright:		Copyright(C) 2011-2012, ketayao.com
 * Filename:		SingleThreadedExecution.ketayao.ThisClass.java
 * Class:			ThisClass
 * Date:			2012-10-17
 * Author:			<a href="mailto:ketayao@gmail.com">ketayao</a>
 * Version          1.1.0
 * Description:		
 *
 * </pre>
 **/
 
package SingleThreadedExecution.ketayao;

/** 
 *  synchronized(this) and synchronized(ClassName.class)?
 * 	同步（这）对当前对象是同步的，所以只有一个线程可以访问的每个实例，但不同的线程可以访问不同的实例。例如，你可以有一个实例的每个线程。

同步（SomeClass.class）的当前对象的类（或其他类，如果人们希望）是同步的，所以只有一个线程可以访问该类的实例。
 * @author 	<a href="mailto:ketayao@gmail.com">ketayao</a>
 * Version  1.1.0
 * @since   2012-10-17 下午5:38:32 
 */

public class ThisClass {
    private static int counter;
    private String name;
    
    /**  
	 * 构造函数
	 * @param counter
	 * @param name  
	 */ 
	public ThisClass(String name) {
		this.name = name;
	}

	public void enter() {
    	synchronized (ThisClass.class) {
            counter++;
            System.out.println(name + ":" + counter);
		}
    }	

	/**  
	 * 描述
	 * @param args  
	 */
	public static void main(String[] args) {
		ThisClass thisClass1 = new ThisClass("ThisClass1");
		new ThisClassThread(thisClass1).start();
		//new ThisClassThread(thisClass1).start();

		ThisClass thisClass2 = new ThisClass("ThisClass2");
		new ThisClassThread(thisClass2).start();
		//new ThisClassThread(thisClass2).start();
	}

}
